# author: LiuShihao
# data: 2020/11/25 5:10 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc: 学习  字典 类型

"""
字典的创建：两种方式
最常用的方式：使用大括号{}
另一种方式：使用内置函数  dict(name='张三',age=18)

"""

# 创建字典方式一
source = {'张三':98,'李四':100,'王五':66}

user = dict(name='张三',age=18)
print(source,type(source))
print(user,type(user))
# 创建空字典
d = {}
print(d,type(d))

# 字典的常用操作
"""
字典中元素的获取：
[]   
get()
两种方式的区别：
    []:如果字典中不存在指定的key，会抛出异常KeyError
    get():如果字典中不存在指定的key,不会会抛出异常KeyError而是返回None，可以通过参数设置默认的value，一遍指定的key不存在时返回
"""
source = {'张三':98,'李四':100,'王五':66}
print(source['张三'])
print(source.get('张三'))

# print(source['赵六'])

print(source.get('赵六'))
print(source.get('赵六',99))

# key的判断  in ,not in
print('张三' in source)
print('张三' not in source)
# 字典元素的删除
print(source)
del source['张三']
print(source)

source = {'张三':98,'李四':100,'王五':66}
print(source)
# 清空字典的元素
source.clear()
print(source)
# 字典元素的新增
source = {'李四':100,'王五':66}
print(source)
# 添加 张三：98
source['张三'] = 98
print(source)
# 修改元素的值
source['张三'] = 100
print(source)
"""
获取字典视图的三种方法：
    keys（）   获取字典中所有的键   将所有由keyc组成的视图转成列表
    values（） 获取字典中所有的值
    items（）  获取字典中所有的键值对
"""
source = {'张三':98,'李四':100,'王五':66}
keys = source.keys()
values = source.values()
items = source.items()
print(keys,type(keys))
print(values,type(values))
print(items,type(items))
source['张三'] = 98
print(list(items))  # 转换之后的元素是有元组组成的  [('张三', 98), ('李四', 100), ('王五', 66)]

# 字典元素的遍历
source = {'张三':98,'李四':100,'王五':66}
for item in source:
    print(item,source[item],source.get(item))# print(item)只打印键key
"""
字典的特点
1. 字典中的所有元素都是一个key- value对,key不允许重复, value可以重复
2. 字典中的元素是无序的
3. 字典中的key必须是不可变对象
4. 字典也可以根据需要动态地伸缩
5. 字典会浪费较大的内存,是一种使用空间换时间的数据结构
"""
d = {'name':'zs','name':'ls'}  # key不允许重复
print(d)

d = {'name':'zs','nikename':'zs'}  # value不允许重复
print(d)
'''
字典生成式：{item:price for item,price in zip(items,prices)}
将items列表中的元素作为key，将prices列表中元素作为value，使用zip（）内置函数
'''
items = ['Fruits','Books','Other']
prices = [96,78,85]
d = {item:price for item,price in zip(items,prices)}
print(d)









